package br.com.sisgerenciamento.model.endereco;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import br.com.sisgerenciamento.dto.endereco.EnderecoDTO;
import br.com.sisgerenciamento.model.cliente.ClienteVO;
import br.com.sisgerenciamento.utilidades.EstadosBrasilEnum;
import br.com.sisgerenciamento.utilidades.Validator;

@Entity
@Table(name = "ENDERECO")
public class EnderecoVO {
	
	@Id
	@GeneratedValue
	private Long codigo;
	
	@Column(length = 100)
	private String logradouro;
	
	@Column(length = 10)
	private String numero;
	
	@Column(length = 50)
	private String bairro;
	
	@Column(length = 50)
	private String cidade;
	
	@Enumerated(EnumType.ORDINAL)
	private EstadosBrasilEnum uf;
	
	@Column(length = 10)
	private String cep;
	
	@Enumerated(EnumType.ORDINAL)
	private TipoEnderecoEnum tipo;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "cliente_id", nullable = false)
	private ClienteVO cliente;
	
	public EnderecoDTO getDTO(){
		EnderecoDTO dto = new EnderecoDTO();
		dto.setCodigo(getCodigo().toString());
		dto.setLogradouro(getLogradouro());
		dto.setNumero(getNumero());
		dto.setCidade(getCidade());
		dto.setUf(getUf().getValor());
		dto.setCep(getCep() != null ?  getCep() : "");
		dto.setTipo(getTipo().getValor());
		dto.setEnums();
		dto.setBairro(getBairro());
		return dto;
	}

	public ClienteVO getCliente() {
		return cliente;
	}
	public void setCliente(ClienteVO cliente) {
		this.cliente = cliente;
	}
	public Long getCodigo() {
		return codigo;
	}
	public void setCodigo(Long codigo) {
		this.codigo = codigo;
	}

	public String getLogradouro() {
		return logradouro;
	}

	public void setLogradouro(String logradouro) {
		this.logradouro = logradouro;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public String getBairro() {
		return bairro;
	}
	public void setBairro(String bairro) {
		this.bairro = bairro;
	}
	public String getCidade() {
		return cidade;
	}
	public void setCidade(String cidade) {
		this.cidade = cidade;
	}
	public EstadosBrasilEnum getUf() {
		return uf;
	}
	public void setUf(EstadosBrasilEnum uf) {
		this.uf = uf;
	}
	public String getCep() {
		return cep;
	}
	public void setCep(String cep) {
		this.cep = cep;
	}
	public TipoEnderecoEnum getTipo() {
		return tipo;
	}
	public void setTipo(TipoEnderecoEnum tipo) {
		this.tipo = tipo;
	}
	
	
	
}
